package com.ruoyi.pack.mapper;

import java.util.List;
import com.ruoyi.pack.domain.PackLocator;
import org.apache.ibatis.annotations.Param;

/**
 * 定位器Mapper接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface PackLocatorMapper 
{
    /**
     * 查询定位器
     * 
     * @param locatorId 定位器主键
     * @return 定位器
     */
    public PackLocator selectPackLocatorByLocatorId(Long locatorId);

    /**
     * 查询定位器列表
     * 
     * @param packLocator 定位器
     * @return 定位器集合
     */
    public List<PackLocator> selectPackLocatorList(PackLocator packLocator);

    /**
     * 新增定位器
     * 
     * @param packLocator 定位器
     * @return 结果
     */
    public int insertPackLocator(PackLocator packLocator);

    /**
     * 修改定位器
     * 
     * @param packLocator 定位器
     * @return 结果
     */
    public int updatePackLocator(PackLocator packLocator);

    /**
     * 删除定位器
     * 
     * @param locatorId 定位器主键
     * @return 结果
     */
    public int deletePackLocatorByLocatorId(Long locatorId);

    /**
     * 批量删除定位器
     * 
     * @param locatorIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePackLocatorByLocatorIds(Long[] locatorIds);

    /**
     * 根据定位器编码查询定位器
     * 
     * @param locatorCode 定位器编码
     * @return 定位器
     */
    public PackLocator selectPackLocatorByLocatorCode(String locatorCode);

    /**
     * 更新定位器状态
     * 
     * @param locatorId 定位器ID
     * @param locatorStatus 定位器状态
     * @param batteryLevel 电池电量
     * @param signalStrength 信号强度
     * @return 结果
     */
    public int updateLocatorStatus(@Param("locatorId") Long locatorId,
                                  @Param("locatorStatus") String locatorStatus,
                                  @Param("batteryLevel") Long batteryLevel,
                                  @Param("signalStrength") Long signalStrength);

    /**
     * 查询未绑定器具的定位器
     * 
     * @return 定位器集合
     */
    public List<PackLocator> selectUnboundLocators();

    /**
     * 查询已绑定器具的定位器
     * 
     * @return 定位器集合
     */
    public List<PackLocator> selectBoundLocators();
} 